Redshiftで簡単に特定のカラム以外をSELECTする方法

Redshiftで簡単に特定のカラム以外をSELECTする方法

Clock Icon2023.11.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部のueharaです。

今回は、Redshiftで簡単に特定のカラム以外をSELECTする方法をご紹介してみたいと思います。

はじめに

基本的には「抽出したいカラムをSELECT文で記載すれば良い」と言うのはその通りなのですが、例えばテーブルのカラム数が300個あり、その内の2カラムを除いて抽出したいケースだと、SELECT文に298カラム記載をする必要があります。

処理的にはシンプルなのですが、除きたいカラムの方が圧倒的に少ないのに抽出したいカラムの方を記載するのは大変ですし、SQLも長くなってしまうため可読性が低下するという問題があります。

例えばBigQueryだとテーブル table1 から col1, col2 というカラムを除いてSELECTしたい場合は以下のように記載することができますが、Redshiftにはこれに相当するSQLコマンドがありません

SELECT * EXCEPT (col1, col2)
FROM `table1`;

Redshiftでの対応

処理的にはひと手間入るですが、以下のように一時テーブルを作成し、そのテーブルから除きたいカラムを削除することで先のBigQueryのEXCEPTに相当する処理を表現することができます。

CREATE TEMP TABLE tmp_table1 as (
    SELECT *
    FROM table1
);

ALTER TABLE tmp_test DROP COLUMN col1;
ALTER TABLE tmp_test DROP COLUMN col2;

SELECT * FROM tmp_table1;

最後に

今回は、Redshiftで簡単に特定のカラム以外をSELECTする方法をご紹介してみました。

参考になりましたら幸いです。

参考文献

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.